﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExpertSystem.Interfaces
{
    public interface IFunction
    {
        /// <summary>
        /// Имя функции
        /// </summary>
        string Name { get; set; }
        /// <summary>
        /// Переменные учавствующие в вычислении значения
        /// </summary>
        List<IVariable> Variables { get; set;}

        /// <summary>
        /// Выполнить вычисление функции
        /// </summary>
        /// <returns>Значение функции</returns>
        bool Calculate();

        bool CanBeResolved();
        /// <summary>
        /// Описание семантики функции
        /// </summary>
        string Discription { get; }

        bool CanBeCalculated();
    }
}
